using System.Collections.Generic;
using System.Xml.Linq;
using ns20;

namespace ns17
{
	internal class Class100 : Class99, Interface10, Interface11
	{
		private XDocument XDocument_0 => (XDocument)base.Object_0;

		public override IList<Interface10> Prop_0
		{
			get
			{
				IList<Interface10> prop_ = base.Prop_0;
				if (XDocument_0.Declaration != null)
				{
					prop_.Insert(0, new Class98(XDocument_0.Declaration));
				}
				return prop_;
			}
		}

		public Interface12 Interface12_0
		{
			get
			{
				if (XDocument_0.Root == null)
				{
					return null;
				}
				return new Class101(XDocument_0.Root);
			}
		}

		public Class100(XDocument document)
			: base(document)
		{
		}

		public Interface10 imethod_1(string string_0)
		{
			return new Class97(new XComment(string_0));
		}

		public Interface10 imethod_2(string string_0)
		{
			return new Class97(new XText(string_0));
		}

		public Interface10 imethod_3(string string_0)
		{
			return new Class97(new XCData(string_0));
		}

		public Interface10 imethod_4(string string_0)
		{
			return new Class97(new XText(string_0));
		}

		public Interface10 imethod_5(string string_0)
		{
			return new Class97(new XText(string_0));
		}

		public Interface10 imethod_6(string string_0, string string_1, string string_2)
		{
			return new Class98(new XDeclaration(string_0, string_1, string_2));
		}

		public Interface10 imethod_7(string string_0, string string_1)
		{
			return new Class104(new XProcessingInstruction(string_0, string_1));
		}

		public Interface12 imethod_8(string string_0)
		{
			return new Class101(new XElement(string_0));
		}

		public Interface12 imethod_9(string string_0, string string_1)
		{
			string localName = Class194.smethod_5(string_0);
			return new Class101(new XElement(XName.Get(localName, string_1)));
		}

		public Interface10 imethod_10(string string_0, string string_1)
		{
			return new Class105(new XAttribute(string_0, string_1));
		}

		public Interface10 imethod_11(string string_0, string string_1, string string_2)
		{
			string localName = Class194.smethod_5(string_0);
			return new Class105(new XAttribute(XName.Get(localName, string_1), string_2));
		}

		public override Interface10 imethod_0(Interface10 interface10_0)
		{
			Class98 @class = interface10_0 as Class98;
			if (@class != null)
			{
				XDocument_0.Declaration = @class.XDeclaration_0;
				return @class;
			}
			return base.imethod_0(interface10_0);
		}
	}
}
